From ef5a82b30b1c01b8a92516c26914409311cba15e Mon Sep 17 00:00:00 2001 From: Jimi Xenidis Date: Wed, 22 Nov 2006 16:09:28 -0500 Subject: [PATCH] [XEN][POWERPC] Fix Register dumping from ^A^A^A console Signed-off-by: Jimi Xenidis Signed-off-by: Hollis Blanchard --HG-- extra : transplant_source : %17p%07aXH%AADK%0C%CBOXF%BAt%E6z%C0%03 --- xen/arch/powerpc/backtrace.c | 12 ++++++++++++ xen/include/asm-powerpc/debugger.h | 21 ++++++++++++--------- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/xen/arch/powerpc/backtrace.c b/xen/arch/powerpc/backtrace.c index 02333bb2e4..3615d08fe4 100644 --- a/xen/arch/powerpc/backtrace.c +++ b/xen/arch/powerpc/backtrace.c @@ -220,3 +220,15 @@ void __warn(char *file, int line) console_end_sync(); } + +void dump_execution_state(void) +{ + struct vcpu *v = current; + struct cpu_user_regs *regs = &v->arch.ctxt; + + show_registers(regs); + if (regs->msr & MSR_HV) { + printk("In Xen:\n"); + show_backtrace(regs->gprs[1], regs->pc, regs->lr); + } +} diff --git a/xen/include/asm-powerpc/debugger.h b/xen/include/asm-powerpc/debugger.h index 9ef2e375ea..4e4cea5df2 100644 --- a/xen/include/asm-powerpc/debugger.h +++ b/xen/include/asm-powerpc/debugger.h @@ -27,11 +27,19 @@ extern void show_backtrace_regs(struct cpu_user_regs *); extern void show_backtrace(ulong sp, ulong lr, ulong pc); -static inline void dump_execution_state(void) +static inline void show_execution_state(struct cpu_user_regs *regs) +{ + show_registers(regs); +} + +extern void dump_execution_state(void); + +static inline void dump_all_execution_state(void) { ulong sp; ulong lr; + dump_execution_state(); sp = (ulong)__builtin_frame_address(0); lr = (ulong)__builtin_return_address(0); @@ -40,13 +48,13 @@ static inline void dump_execution_state(void) static inline void __force_crash(void) { - dump_execution_state(); + dump_all_execution_state(); __builtin_trap(); } static inline void debugger_trap_immediate(void) { - dump_execution_state(); + dump_all_execution_state(); #ifdef CRASH_DEBUG __builtin_trap(); #endif @@ -55,15 +63,10 @@ static inline void debugger_trap_immediate(void) static inline void unimplemented(void) { #ifdef VERBOSE - dump_execution_state(); + dump_all_execution_state(); #endif } -static inline void show_execution_state(struct cpu_user_regs *regs) -{ - show_registers(regs); -} - extern void __warn(char *file, int line); #define WARN() __warn(__FILE__, __LINE__) #define WARN_ON(_p) do { if (_p) WARN(); } while ( 0 ) -- 2.30.2